#pragma once

#include "winnt.h"
#include "scoped_ptr.h"

class PEFile
{
public:
    typedef bool (* EnumImportTableCallback)(void *pParam);
    typedef bool (* EnumExportTableCallback)(void *pParam);
    typedef bool (* EnumResourceCallback)(void *pParam);
    typedef bool (* EnumSectionCallback)(void *pParam);

public:
    PEFile();
    ~PEFile();

    bool Load(const TCHAR *pFilePath);

//     IMAGE_DOS_HEADER *GetDosHeader();
//     IMAGE_NT_HEADERS *GetNTHeader();

//     bool EnumImportTable();
//     bool EnumExportTable();
//     bool EnumResource(EnumResourceCallback pfnCallBack, void *pParam);
//     bool EnumSection();

    CString GetValue(const CString &strKey);

private:
    ScopedHandle m_hFile;
//     IMAGE_DOS_HEADER m_oDosHeader;
//     IMAGE_NT_HEADERS m_oNTHeader;
};